class Watcher {
    constructor(vm, key, cb) {
        //保存实例
        this.vm = vm;
        //data中的属性名称
        this.key = key;
        //回调函数负责更新视图
        this.cb = cb;

        //把watcher对象记录到Dep类的静态属性target
        //触发get方法,在get方法中调用addSub
        Dep.target = this

        //记录数据变化之前的值
        this.oldValue = vm[key];
        //Dep.target设置为空,防止重复添加
        Dep.target = null
    }
    //当数据发生变化的时候更新视图
    update() {

        let newValue = this.vm[this.key];

        if (newValue === this.oldValue) return;

        this.cb(newValue);

    }
}